package com.db.utils;

import java.util.HashMap;
import java.util.Map;

public class ISOMap {

    /**
     * iso时区代码
     * {@link <a href="https://timezonedb.com/time-zones">iso时区代码</a>}
     */
    public static final Map<String, String> ISO_TIME_ZONE_MAP = new HashMap<String, String>() {{
        put("AD", "Europe/Andorra");
        put("AE", "Asia/Dubai");
        put("AF", "Asia/Kabul");
        put("AG", "America/Antigua");
        put("AI", "America/Anguilla");
        put("AL", "Europe/Tirane");
        put("AO", "Africa/Luanda");
        put("AR", "America/Argentina/Buenos_Aires");
        put("AS", "Pacific/Pago_Pago");
        put("AT", "Europe/Vienna");
        put("AU", "Australia/Lord_Howe");
        put("AW", "America/Aruba");
        put("AZ", "Asia/Baku");
        put("BA", "Europe/Sarajevo");
        put("BB", "America/Barbados");
        put("BD", "Asia/Dhaka");
        put("BE", "Europe/Brussels");
        put("BF", "Africa/Ouagadougou");
        put("BG", "Europe/Sofia");
        put("BH", "Asia/Bahrain");
        put("BI", "Africa/Bujumbura");
        put("BJ", "Africa/Porto-Novo");
        put("BM", "Atlantic/Bermuda");
        put("BN", "Asia/Brunei");
        put("BO", "America/La_Paz");
        put("BR", "America/Noronha");
        put("BS", "America/Nassau");
        put("BT", "Asia/Thimphu");
        put("BW", "Africa/Gaborone");
        put("BY", "Europe/Minsk");
        put("BZ", "America/Belize");
        put("CA", "America/St_Johns");
        put("CF", "Africa/Bangui");
        put("CG", "Africa/Brazzaville");
        put("CH", "Europe/Zurich");
        put("CI", "Africa/Abidjan");
        put("CK", "Pacific/Rarotonga");
        put("CL", "America/Santiago");
        put("CM", "Africa/Douala");
        put("CN", "Asia/Shanghai");
        put("CO", "America/Bogota");
        put("CR", "America/Costa_Rica");
        put("CU", "America/Havana");
        put("CV", "Atlantic/Cape_Verde");
        put("CW", "America/Curacao");
        put("CY", "Asia/Nicosia");
        put("CZ", "Europe/Prague");
        put("DE", "Europe/Berlin");
        put("DJ", "Africa/Djibouti");
        put("DK", "Europe/Copenhagen");
        put("DM", "America/Dominica");
        put("DO", "America/Santo_Domingo");
        put("DZ", "Africa/Algiers");
        put("EC", "America/Guayaquil");
        put("EE", "Europe/Tallinn");
        put("EG", "Africa/Cairo");
        put("ER", "Africa/Asmara");
        put("ES", "Europe/Madrid");
        put("ET", "Africa/Addis_Ababa");
        put("FI", "Europe/Helsinki");
        put("FJ", "Pacific/Fiji");
        put("FK", "Atlantic/Stanley");
        put("FO", "Atlantic/Faroe");
        put("FR", "Europe/Paris");
        put("GA", "Africa/Libreville");
        put("GB", "Europe/London");
        put("GD", "America/Grenada");
        put("GF", "America/Cayenne");
        put("GH", "Africa/Accra");
        put("GI", "Europe/Gibraltar");
        put("GL", "America/Nuuk");
        put("GM", "Africa/Banjul");
        put("GN", "Africa/Conakry");
        put("GP", "America/Guadeloupe");
        put("GQ", "Africa/Malabo");
        put("GR", "Europe/Athens");
        put("GT", "America/Guatemala");
        put("GU", "Pacific/Guam");
        put("GW", "Africa/Bissau");
        put("GY", "America/Guyana");
        put("HK", "Asia/Hong_Kong");
        put("HN", "America/Tegucigalpa");
        put("HR", "Europe/Zagreb");
        put("ID", "Asia/Jakarta");
        put("IE", "Europe/Dublin");
        put("IL", "Asia/Jerusalem");
        put("IN", "Asia/Kolkata");
        put("IQ", "Asia/Baghdad");
        put("IR", "Asia/Tehran");
        put("IS", "Atlantic/Reykjavik");
        put("IT", "Europe/Rome");
        put("JM", "America/Jamaica");
        put("JO", "Asia/Amman");
        put("JP", "Asia/Tokyo");
        put("KE", "Africa/Nairobi");
        put("KG", "Asia/Bishkek");
        put("KH", "Asia/Phnom_Penh");
        put("KI", "Pacific/Tarawa");
        put("KM", "Indian/Comoro");
        put("KN", "America/St_Kitts");
        put("KP", "Asia/Pyongyang");
        put("KR", "Asia/Seoul");
        put("KW", "Asia/Kuwait");
        put("KY", "America/Cayman");
        put("KZ", "Asia/Almaty");
        put("LA", "Asia/Vientiane");
        put("LB", "Asia/Beirut");
        put("LC", "America/St_Lucia");
        put("LK", "Asia/Colombo");
        put("LR", "Africa/Monrovia");
        put("LS", "Africa/Maseru");
        put("LT", "Europe/Vilnius");
        put("LU", "Europe/Luxembourg");
        put("LV", "Europe/Riga");
        put("LY", "Africa/Tripoli");
        put("MA", "Africa/Casablanca");
        put("MC", "Europe/Monaco");
        put("MD", "Europe/Chisinau");
        put("ME", "Europe/Podgorica");
        put("MG", "Indian/Antananarivo");
        put("MH", "Pacific/Majuro");
        put("MK", "Europe/Skopje");
        put("ML", "Africa/Bamako");
        put("MM", "Asia/Yangon");
        put("MN", "Asia/Ulaanbaatar");
        put("MO", "Asia/Macau");
        put("MP", "Pacific/Saipan");
        put("MQ", "America/Martinique");
        put("MR", "Africa/Nouakchott");
        put("MS", "America/Montserrat");
        put("MT", "Europe/Malta");
        put("MU", "Indian/Mauritius");
        put("MV", "Indian/Maldives");
        put("MW", "Africa/Blantyre");
        put("MX", "America/Mexico_City");
        put("MY", "Asia/Kuala_Lumpur");
        put("MZ", "Africa/Maputo");
        put("NA", "Africa/Windhoek");
        put("NC", "Pacific/Noumea");
        put("NE", "Africa/Niamey");
        put("NG", "Africa/Lagos");
        put("NI", "America/Managua");
        put("NL", "Europe/Amsterdam");
        put("NO", "Europe/Oslo");
        put("NP", "Asia/Kathmandu");
        put("NR", "Pacific/Nauru");
        put("NU", "Pacific/Niue");
        put("NZ", "Pacific/Auckland");
        put("OM", "Asia/Muscat");
        put("PA", "America/Panama");
        put("PE", "America/Lima");
        put("PF", "Pacific/Tahiti");
        put("PG", "Pacific/Port_Moresby");
        put("PH", "Asia/Manila");
        put("PK", "Asia/Karachi");
        put("PL", "Europe/Warsaw");
        put("PM", "America/Miquelon");
        put("PR", "America/Puerto_Rico");
        put("PS", "Asia/Gaza");
        put("PT", "Europe/Lisbon");
        put("PW", "Pacific/Palau");
        put("PY", "America/Asuncion");
        put("QA", "Asia/Qatar");
        put("RO", "Europe/Bucharest");
        put("RS", "Europe/Belgrade");
        put("RU", "Europe/Kaliningrad");
        put("RW", "Africa/Kigali");
        put("SA", "Asia/Riyadh");
        put("SB", "Pacific/Guadalcanal");
        put("SC", "Indian/Mahe");
        put("SD", "Africa/Khartoum");
        put("SE", "Europe/Stockholm");
        put("SG", "Asia/Singapore");
        put("SI", "Europe/Ljubljana");
        put("SK", "Europe/Bratislava");
        put("SL", "Africa/Freetown");
        put("SM", "Europe/San_Marino");
        put("SN", "Africa/Dakar");
        put("SO", "Africa/Mogadishu");
        put("SR", "America/Paramaribo");
        put("ST", "Africa/Sao_Tome");
        put("SV", "America/El_Salvador");
        put("SY", "Asia/Damascus");
        put("SZ", "Africa/Mbabane");
        put("TC", "America/Grand_Turk");
        put("TD", "Africa/Ndjamena");
        put("TG", "Africa/Lome");
        put("TH", "Asia/Bangkok");
        put("TJ", "Asia/Dushanbe");
        put("TL", "Asia/Dili");
        put("TM", "Asia/Ashgabat");
        put("TN", "Africa/Tunis");
        put("TO", "Pacific/Tongatapu");
        put("TR", "Europe/Istanbul");
        put("TT", "America/Port_of_Spain");
        put("TW", "Asia/Taipei");
        put("TZ", "Africa/Dar_es_Salaam");
        put("UA", "Europe/Simferopol");
        put("UG", "Africa/Kampala");
        put("UY", "America/Montevideo");
        put("UZ", "Asia/Samarkand");
        put("VA", "Europe/Vatican");
        put("VC", "America/St_Vincent");
        put("VE", "America/Caracas");
        put("VG", "America/Tortola");
        put("VI", "America/St_Thomas");
        put("VN", "Asia/Ho_Chi_Minh");
        put("VU", "Pacific/Efate");
        put("WF", "Pacific/Wallis");
        put("WS", "Pacific/Apia");
        put("YE", "Asia/Aden");
        put("ZA", "Africa/Johannesburg");
        put("ZM", "Africa/Lusaka");
        put("ZW", "Africa/Harare");
        put("CD", "Africa/Kinshasa");
        put("HU", "Europe/Budapest");
    }};


    /**
     * iso语言代码
     * {@link <a href="https://zh.wikipedia.org/wiki/ISO_639-1">ISO 639-1</a>}
     */
    public static final Map<String, String> ISO_LANGUAGE_MAP = new HashMap<String, String>() {{
        put("AD", "ca");
        put("AE", "ar");
        put("AF", "fa");
        put("AG", "en");
        put("AI", "en");
        put("AL", "sq");
        put("AO", "pt");
        put("AR", "es");
        put("AS", "en");
        put("AT", "de");
        put("AU", "en");
        put("AW", "nl");
        put("AZ", "az");
        put("BA", "bs");
        put("BB", "en");
        put("BD", "bn");
        put("BE", "nl");
        put("BF", "fr");
        put("BG", "bg");
        put("BH", "ar");
        put("BI", "rn");
        put("BJ", "fr");
        put("BM", "en");
        put("BN", "ms");
        put("BO", "es");
        put("BR", "pt");
        put("BS", "en");
        put("BT", "dz");
        put("BW", "en");
        put("BY", "be");
        put("BZ", "en");
        put("CA", "en");
        put("CF", "fr");
        put("CG", "fr");
        put("CH", "de");
        put("CI", "fr");
        put("CK", "en");
        put("CL", "es");
        put("CM", "fr");
        put("CN", "zh");
        put("CO", "es");
        put("CR", "es");
        put("CU", "es");
        put("CV", "pt");
        put("CW", "pap");
        put("CY", "el");
        put("CZ", "cs");
        put("DE", "de");
        put("DJ", "aa");
        put("DK", "da");
        put("DM", "en");
        put("DO", "es");
        put("DZ", "ar");
        put("EC", "es");
        put("EE", "et");
        put("EG", "ar");
        put("ER", "ti");
        put("ES", "es");
        put("ET", "am");
        put("FI", "fi");
        put("FJ", "en");
        put("FK", "en");
        put("FO", "fo");
        put("FR", "fr");
        put("GA", "fr");
        put("GB", "en");
        put("GD", "en");
        put("GF", "fr");
        put("GH", "ak");
        put("GI", "en");
        put("GL", "kl");
        put("GM", "en");
        put("GN", "fr");
        put("GP", "fr");
        put("GQ", "es");
        put("GR", "el");
        put("GT", "es");
        put("GU", "en");
        put("GW", "pt");
        put("GY", "en");
        put("HK", "zh");
        put("HN", "es");
        put("HR", "hr");
        put("ID", "id");
        put("IE", "en");
        put("IL", "he");
        put("IN", "hi");
        put("IQ", "ar");
        put("IR", "fa");
        put("IS", "is");
        put("IT", "it");
        put("JM", "en");
        put("JO", "ar");
        put("JP", "ja");
        put("KE", "sw");
        put("KG", "ky");
        put("KH", "km");
        put("KI", "en");
        put("KM", "ar");
        put("KN", "en");
        put("KP", "ko");
        put("KR", "ko");
        put("KW", "ar");
        put("KY", "en");
        put("KZ", "ru");
        put("LA", "lo");
        put("LB", "ar");
        put("LC", "en");
        put("LK", "si");
        put("LR", "en");
        put("LS", "st");
        put("LT", "lt");
        put("LU", "fr");
        put("LV", "lv");
        put("LY", "ar");
        put("MA", "ar");
        put("MC", "fr");
        put("MD", "ro");
        put("ME", "sr");
        put("MG", "mg");
        put("MH", "en");
        put("MK", "mk");
        put("ML", "bm");
        put("MM", "my");
        put("MN", "mn");
        put("MO", "zh");
        put("MP", "en");
        put("MQ", "fr");
        put("MR", "ar");
        put("MS", "en");
        put("MT", "mt");
        put("MU", "mfe");
        put("MV", "dv");
        put("MW", "en");
        put("MX", "es");
        put("MY", "ms");
        put("MZ", "pt");
        put("NA", "af");
        put("NC", "fr");
        put("NE", "ha");
        put("NG", "en");
        put("NI", "es");
        put("NL", "nl");
        put("NO", "nb");
        put("NP", "ne");
        put("NR", "en");
        put("NU", "en");
        put("NZ", "en");
        put("OM", "ar");
        put("PA", "es");
        put("PE", "es");
        put("PF", "fr");
        put("PG", "tpi");
        put("PH", "fil");
        put("PK", "ur");
        put("PL", "pl");
        put("PM", "fr");
        put("PR", "es");
        put("PS", "ar");
        put("PT", "pt");
        put("PW", "en");
        put("PY", "gn");
        put("QA", "ar");
        put("RO", "ro");
        put("RS", "sr");
        put("RU", "ru");
        put("RW", "rw");
        put("SA", "ar");
        put("SB", "en");
        put("SC", "fr");
        put("SD", "ar");
        put("SE", "sv");
        put("SG", "en");
        put("SI", "sl");
        put("SK", "sk");
        put("SL", "en");
        put("SM", "it");
        put("SN", "fr");
        put("SO", "so");
        put("SR", "nl");
        put("ST", "pt");
        put("SV", "es");
        put("SY", "ar");
        put("SZ", "en");
        put("TC", "en");
        put("TD", "fr");
        put("TG", "fr");
        put("TH", "th");
        put("TJ", "tg");
        put("TL", "pt");
        put("TM", "tk");
        put("TN", "ar");
        put("TO", "to");
        put("TR", "tr");
        put("TT", "en");
        put("TW", "zh");
        put("TZ", "sw");
        put("UA", "uk");
        put("UG", "sw");
        put("UY", "es");
        put("UZ", "uz");
        put("VA", "it");
        put("VC", "en");
        put("VE", "es");
        put("VG", "en");
        put("VI", "en");
        put("VN", "vi");
        put("VU", "en");
        put("WF", "fr");
        put("WS", "en");
        put("YE", "ar");
        put("ZA", "en");
        put("ZM", "bem");
        put("ZW", "sn");
        put("CD", "sw");
        put("HU", "hu");
    }};


    /**
     * MCC(移动国家码)和 MNC(移动网络码)
     * {@link <a href="https://blog.csdn.net/bytxl/article/details/48345581">MCC(移动国家码)和 MNC(移动网络码)</a>}
     */
    public static final Map<String, String> ISO_MCC_MAP = new HashMap<String, String>() {{
        put("AD", "213");
        put("AE", "424");
        put("AF", "412");
        put("AG", "344");
        put("AI", "365");
        put("AL", "276");
        put("AO", "631");
        put("AR", "722");
        put("AS", "544");
        put("AT", "232");
        put("AU", "505");
        put("AW", "363");
        put("AZ", "400");
        put("BA", "218");
        put("BB", "342");
        put("BD", "470");
        put("BE", "206");
        put("BF", "613");
        put("BG", "284");
        put("BH", "426");
        put("BI", "642");
        put("BJ", "616");
        put("BM", "350");
        put("BN", "528");
        put("BO", "736");
        put("BR", "724");
        put("BS", "364");
        put("BT", "402");
        put("BW", "652");
        put("BY", "257");
        put("BZ", "702");
        put("CA", "302");
        put("CF", "623");
        put("CG", "629");
        put("CH", "228");
        put("CI", "612");
        put("CK", "548");
        put("CL", "730");
        put("CM", "624");
        put("CN", "460");
        put("CO", "732");
        put("CR", "712");
        put("CU", "368");
        put("CV", "625");
        put("CW", "362");
        put("CY", "280");
        put("CZ", "230");
        put("DE", "262");
        put("DJ", "638");
        put("DK", "238");
        put("DM", "366");
        put("DO", "370");
        put("DZ", "603");
        put("EC", "740");
        put("EE", "248");
        put("EG", "602");
        put("ER", "657");
        put("ES", "214");
        put("ET", "636");
        put("FI", "244");
        put("FJ", "542");
        put("FK", "750");
        put("FO", "288");
        put("FR", "208");
        put("GA", "628");
        put("GB", "234");
        put("GD", "352");
        put("GF", "742");
        put("GH", "620");
        put("GI", "266");
        put("GL", "290");
        put("GM", "607");
        put("GN", "611");
        put("GP", "340");
        put("GQ", "627");
        put("GR", "202");
        put("GT", "704");
        put("GU", "535");
        put("GW", "632");
        put("GY", "738");
        put("HK", "454");
        put("HN", "708");
        put("HR", "219");
        put("ID", "510");
        put("IE", "272");
        put("IL", "425");
        put("IN", "404");
        put("IQ", "418");
        put("IR", "432");
        put("IS", "274");
        put("IT", "222");
        put("JM", "338");
        put("JO", "416");
        put("JP", "440");
        put("KE", "639");
        put("KG", "437");
        put("KH", "456");
        put("KI", "545");
        put("KM", "654");
        put("KN", "356");
        put("KP", "467");
        put("KR", "450");
        put("KW", "419");
        put("KY", "346");
        put("KZ", "401");
        put("LA", "457");
        put("LB", "415");
        put("LC", "358");
        put("LK", "413");
        put("LR", "618");
        put("LS", "651");
        put("LT", "246");
        put("LU", "270");
        put("LV", "247");
        put("LY", "606");
        put("MA", "604");
        put("MC", "212");
        put("MD", "259");
        put("ME", "297");
        put("MG", "646");
        put("MH", "551");
        put("MK", "294");
        put("ML", "610");
        put("MM", "414");
        put("MN", "428");
        put("MO", "455");
        put("MP", "534");
        put("MQ", "340");
        put("MR", "609");
        put("MS", "354");
        put("MT", "278");
        put("MU", "617");
        put("MV", "472");
        put("MW", "650");
        put("MX", "334");
        put("MY", "502");
        put("MZ", "643");
        put("NA", "649");
        put("NC", "546");
        put("NE", "614");
        put("NG", "621");
        put("NI", "710");
        put("NL", "204");
        put("NO", "242");
        put("NP", "429");
        put("NR", "536");
        put("NU", "555");
        put("NZ", "530");
        put("OM", "422");
        put("PA", "714");
        put("PE", "716");
        put("PF", "547");
        put("PG", "537");
        put("PH", "515");
        put("PK", "410");
        put("PL", "260");
        put("PM", "308");
        put("PR", "330");
        put("PS", "425");
        put("PT", "268");
        put("PW", "552");
        put("PY", "744");
        put("QA", "427");
        put("RO", "226");
        put("RS", "220");
        put("RU", "250");
        put("RW", "635");
        put("SA", "420");
        put("SB", "540");
        put("SC", "633");
        put("SD", "634");
        put("SE", "240");
        put("SG", "525");
        put("SI", "293");
        put("SK", "231");
        put("SL", "619");
        put("SM", "292");
        put("SN", "608");
        put("SO", "637");
        put("SR", "746");
        put("ST", "626");
        put("SV", "706");
        put("SY", "417");
        put("SZ", "653");
        put("TC", "376");
        put("TD", "622");
        put("TG", "615");
        put("TH", "520");
        put("TJ", "436");
        put("TL", "514");
        put("TM", "438");
        put("TN", "605");
        put("TO", "539");
        put("TR", "286");
        put("TT", "374");
        put("TW", "466");
        put("TZ", "640");
        put("UA", "255");
        put("UG", "641");
        put("UY", "748");
        put("UZ", "434");
        put("VA", "225");
        put("VC", "360");
        put("VE", "734");
        put("VG", "348");
        put("VI", "332");
        put("VN", "452");
        put("VU", "541");
        put("WF", "543");
        put("WS", "549");
        put("YE", "421");
        put("ZA", "655");
        put("ZM", "645");
        put("ZW", "648");
        put("CD", "630");
        put("HU", "216");
    }};
}
